﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using LuckyLoot.Domain.Entities;
using LuckyLoot.Domain.Aggregate;

namespace LuckyLoot.ServiceFacade.Contracts
{
    public interface IReminderService
    {
        // TODO: [Ideias] Se possível, tentar fazer  um esquema inteligente com os lembretes de materiais. Tipo verificar que foram feitas muitas tattoos pretas e lembrar de tinta preta. Ou verificar que foram feitas muitas tattoos e não foi mais comprado papel toalha, inferir o uso de materiais a partir de um TattooAppointment (quantidade de agulhas, quantidade de tintas) essas coisas.
        
        // lembretes de materiais que estão com baixa quantidade no estoque
        IEnumerable<Supply> LowStockSupplies(); // TODO: Ir reduzindo as quantidades conforme for fazendo as tattoos, de acordo com a quantidade, umas locura aí... (se for um item que tem muitas unidades por pacote, diminui bastante. senão diminui pouco. considerar também as unidades de medida. e se ainda assim não ficar bom, tocar uns filtros hardcoded por "tinta", "agulha", etc)

        // lembretes de materiais que estão próximos do vencimento da data de validade
        IEnumerable<Supply> ExpiringSupplies();
        
        // lembretes de ferramentas que estão próximas da data de vencimento de sua esterilização
        IEnumerable<Tool> ExpiringSterilizationTools();

        // lembretes de atendimentos e procedimentos que estão agendados para a semana
        IEnumerable<Apointment> WeekAppointments();

    }
}
